use crate::REQWEST_CLIENT;
use anyhow::{ ensure, Result };
use serde::{ Deserialize, Serialize };
use serde_json::Value;

/// 利润表 Mapping to [RPT_F10_FINANCE_BINCOME.json](file:///Users/CC/gitee/conanchen/fuquants-workspace/crates/fudacli/eastmoney/sample/RPT_F10_FINANCE_BINCOME.json)
#[derive(Debug, Serialize, Deserialize)]
pub struct RptF10FinanceBincome {
    pub version: Value,
    pub result: RptF10FinanceBincomeResult,
    pub success: Value,
    pub message: Value,
    pub code: Value,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct RptF10FinanceBincomeResult {
    pub pages: Value,
    pub data: Vec<RptF10FinanceBincomeResultData>,
    pub count: Option<Value>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct RptF10FinanceBincomeResultData {
    #[serde(rename = "SECUCODE")]
    pub secucode: Option<Value>, // 证券代码
    #[serde(rename = "SECURITY_CODE")]
    pub security_code: Option<Value>, // 证券代码
    #[serde(rename = "SECURITY_NAME_ABBR")]
    pub security_name_abbr: Option<Value>, // 证券简称
    #[serde(rename = "ORG_CODE")]
    pub org_code: Option<Value>, // 机构代码
    #[serde(rename = "ORG_TYPE")]
    pub org_type: Option<Value>, // 机构类型
    #[serde(rename = "REPORT_DATE")]
    pub report_date: Option<Value>, // 报告日期
    #[serde(rename = "REPORT_TYPE")]
    pub report_type: Option<Value>, // 报告类型
    #[serde(rename = "REPORT_DATE_NAME")]
    pub report_date_name: Option<Value>, // 报告日期名称
    #[serde(rename = "SECURITY_TYPE_CODE")]
    pub security_type_code: Option<Value>, // 证券类型代码
    #[serde(rename = "NOTICE_DATE")]
    pub notice_date: Option<Value>, // 公告日期
    #[serde(rename = "UPDATE_DATE")]
    pub update_date: Option<Value>, // 更新日期
    #[serde(rename = "CURRENCY")]
    pub currency: Option<Value>, // 货币类型
    #[serde(rename = "OPERATE_INCOME")]
    pub operate_income: Option<Value>, // 营业收入
    #[serde(rename = "OPERATE_INCOME_YOY")]
    pub operate_income_yoy: Option<Value>, // 营业收入同比
    #[serde(rename = "INTEREST_NI")]
    pub interest_ni: Option<Value>, // 利息净收入
    #[serde(rename = "INTEREST_NI_YOY")]
    pub interest_ni_yoy: Option<Value>, // 利息净收入同比
    #[serde(rename = "INTEREST_INCOME")]
    pub interest_income: Option<Value>, // 利息收入
    #[serde(rename = "INTEREST_INCOME_YOY")]
    pub interest_income_yoy: Option<Value>, // 利息收入同比
    #[serde(rename = "INTEREST_EXPENSE")]
    pub interest_expense: Option<Value>, // 利息支出
    #[serde(rename = "INTEREST_EXPENSE_YOY")]
    pub interest_expense_yoy: Option<Value>, // 利息支出同比
    #[serde(rename = "FEE_COMMISSION_NI")]
    pub fee_commission_ni: Option<Value>, // 手续费及佣金净收入
    #[serde(rename = "FEE_COMMISSION_NI_YOY")]
    pub fee_commission_ni_yoy: Option<Value>, // 手续费及佣金净收入同比
    #[serde(rename = "FEE_COMMISSION_INCOME")]
    pub fee_commission_income: Option<Value>, // 手续费及佣金收入
    #[serde(rename = "FEE_COMMISSION_INCOME_YOY")]
    pub fee_commission_income_yoy: Option<Value>, // 手续费及佣金收入同比
    #[serde(rename = "FEE_COMMISSION_EXPENSE")]
    pub fee_commission_expense: Option<Value>, // 手续费及佣金支出
    #[serde(rename = "FEE_COMMISSION_EXPENSE_YOY")]
    pub fee_commission_expense_yoy: Option<Value>, // 手续费及佣金支出同比
    #[serde(rename = "INVEST_INCOME")]
    pub invest_income: Option<Value>, // 投资收益
    #[serde(rename = "INVEST_INCOME_YOY")]
    pub invest_income_yoy: Option<Value>, // 投资收益同比
    #[serde(rename = "INVEST_JOINT_INCOME")]
    pub invest_joint_income: Option<Value>, // 联营合营企业投资收益
    #[serde(rename = "INVEST_JOINT_INCOME_YOY")]
    pub invest_joint_income_yoy: Option<Value>, // 联营合营企业投资收益同比
    #[serde(rename = "FAIRVALUE_CHANGE_INCOME")]
    pub fairvalue_change_income: Option<Value>, // 公允价值变动收益
    #[serde(rename = "FAIRVALUE_CHANGE_INCOME_YOY")]
    pub fairvalue_change_income_yoy: Option<Value>, // 公允价值变动收益同比
    #[serde(rename = "EXCHANGE_INCOME")]
    pub exchange_income: Option<Value>, // 汇兑收益
    #[serde(rename = "EXCHANGE_INCOME_YOY")]
    pub exchange_income_yoy: Option<Value>, // 汇兑收益同比
    #[serde(rename = "OTHER_BUSINESS_INCOME")]
    pub other_business_income: Option<Value>, // 其他业务收入
    #[serde(rename = "OTHER_BUSINESS_INCOME_YOY")]
    pub other_business_income_yoy: Option<Value>, // 其他业务收入同比
    #[serde(rename = "ASSET_DISPOSAL_INCOME")]
    pub asset_disposal_income: Option<Value>, // 资产处置收益
    #[serde(rename = "ASSET_DISPOSAL_INCOME_YOY")]
    pub asset_disposal_income_yoy: Option<Value>, // 资产处置收益同比
    #[serde(rename = "OTHER_INCOME")]
    pub other_income: Option<Value>, // 其他收益
    #[serde(rename = "OTHER_INCOME_YOY")]
    pub other_income_yoy: Option<Value>, // 其他收益同比
    #[serde(rename = "OPERATE_INCOME_OTHER")]
    pub operate_income_other: Option<Value>, // 其他营业利润
    #[serde(rename = "OPERATE_INCOME_OTHER_YOY")]
    pub operate_income_other_yoy: Option<Value>, // 其他营业利润同比
    #[serde(rename = "OPERATE_INCOME_BALANCE")]
    pub operate_income_balance: Option<Value>, // 营业利润
    #[serde(rename = "OPERATE_INCOME_BALANCE_YOY")]
    pub operate_income_balance_yoy: Option<Value>, // 营业利润同比
    #[serde(rename = "OPERATE_EXPENSE")]
    pub operate_expense: Option<Value>, // 营业支出
    #[serde(rename = "OPERATE_EXPENSE_YOY")]
    pub operate_expense_yoy: Option<Value>, // 营业支出同比
    #[serde(rename = "OPERATE_TAX_ADD")]
    pub operate_tax_add: Option<Value>, // 营业税金及附加
    #[serde(rename = "OPERATE_TAX_ADD_YOY")]
    pub operate_tax_add_yoy: Option<Value>, // 营业税金及附加同比
    #[serde(rename = "BUSINESS_MANAGE_EXPENSE")]
    pub business_manage_expense: Option<Value>, // 业务及管理费
    #[serde(rename = "BUSINESS_MANAGE_EXPENSE_YOY")]
    pub business_manage_expense_yoy: Option<Value>, // 业务及管理费同比
    #[serde(rename = "ASSET_IMPAIRMENT_LOSS")]
    pub asset_impairment_loss: Option<Value>, // 资产减值损失
    #[serde(rename = "ASSET_IMPAIRMENT_LOSS_YOY")]
    pub asset_impairment_loss_yoy: Option<Value>, // 资产减值损失同比
    #[serde(rename = "CREDIT_IMPAIRMENT_LOSS")]
    pub credit_impairment_loss: Option<Value>, // 信用减值损失
    #[serde(rename = "CREDIT_IMPAIRMENT_LOSS_YOY")]
    pub credit_impairment_loss_yoy: Option<Value>, // 信用减值损失同比
    #[serde(rename = "OTHER_BUSINESS_COST")]
    pub other_business_cost: Option<Value>, // 其他业务成本
    #[serde(rename = "OTHER_BUSINESS_COST_YOY")]
    pub other_business_cost_yoy: Option<Value>, // 其他业务成本同比
    #[serde(rename = "OPERATE_EXPENSE_OTHER")]
    pub operate_expense_other: Option<Value>, // 其他营业支出
    #[serde(rename = "OPERATE_EXPENSE_OTHER_YOY")]
    pub operate_expense_other_yoy: Option<Value>, // 其他营业支出同比
    #[serde(rename = "OPERATE_EXPENSE_BALANCE")]
    pub operate_expense_balance: Option<Value>, // 营业支出
    #[serde(rename = "OPERATE_EXPENSE_BALANCE_YOY")]
    pub operate_expense_balance_yoy: Option<Value>, // 营业支出同比
    #[serde(rename = "OPERATE_PROFIT_OTHER")]
    pub operate_profit_other: Option<Value>, // 其他营业利润
    #[serde(rename = "OPERATE_PROFIT_OTHER_YOY")]
    pub operate_profit_other_yoy: Option<Value>, // 其他营业利润同比
    #[serde(rename = "OPERATE_PROFIT_BALANCE")]
    pub operate_profit_balance: Option<Value>, // 营业利润
    #[serde(rename = "OPERATE_PROFIT_BALANCE_YOY")]
    pub operate_profit_balance_yoy: Option<Value>, // 营业利润同比
    #[serde(rename = "OPERATE_PROFIT")]
    pub operate_profit: Option<Value>, // 营业利润
    #[serde(rename = "OPERATE_PROFIT_YOY")]
    pub operate_profit_yoy: Option<Value>, // 营业利润同比
    #[serde(rename = "NONBUSINESS_INCOME")]
    pub nonbusiness_income: Option<Value>, // 营业外收入
    #[serde(rename = "NONBUSINESS_INCOME_YOY")]
    pub nonbusiness_income_yoy: Option<Value>, // 营业外收入同比
    #[serde(rename = "NONCURRENT_DISPOSAL_INCOME")]
    pub noncurrent_disposal_income: Option<Value>, // 非流动资产处置利得
    #[serde(rename = "NONCURRENT_DISPOSAL_INCOME_YOY")]
    pub noncurrent_disposal_income_yoy: Option<Value>, // 非流动资产处置利得同比
    #[serde(rename = "NONBUSINESS_EXPENSE")]
    pub nonbusiness_expense: Option<Value>, // 营业外支出
    #[serde(rename = "NONBUSINESS_EXPENSE_YOY")]
    pub nonbusiness_expense_yoy: Option<Value>, // 营业外支出同比
    #[serde(rename = "NONCURRENT_DISPOSAL_LOSS")]
    pub noncurrent_disposal_loss: Option<Value>, // 非流动资产处置损失
    #[serde(rename = "NONCURRENT_DISPOSAL_LOSS_YOY")]
    pub noncurrent_disposal_loss_yoy: Option<Value>, // 非流动资产处置损失同比
    #[serde(rename = "EFFECT_TP_OTHER")]
    pub effect_tp_other: Option<Value>, // 其他影响利润总额的因素
    #[serde(rename = "EFFECT_TP_OTHER_YOY")]
    pub effect_tp_other_yoy: Option<Value>, // 其他影响利润总额的因素同比
    #[serde(rename = "TOTAL_PROFIT_BALANCE")]
    pub total_profit_balance: Option<Value>, // 利润总额
    #[serde(rename = "TOTAL_PROFIT_BALANCE_YOY")]
    pub total_profit_balance_yoy: Option<Value>, // 利润总额同比
    #[serde(rename = "TOTAL_PROFIT")]
    pub total_profit: Option<Value>, // 利润总额
    #[serde(rename = "TOTAL_PROFIT_YOY")]
    pub total_profit_yoy: Option<Value>, // 利润总额同比
    #[serde(rename = "INCOME_TAX")]
    pub income_tax: Option<Value>, // 所得税
    #[serde(rename = "INCOME_TAX_YOY")]
    pub income_tax_yoy: Option<Value>, // 所得税同比
    #[serde(rename = "EFFECT_NETPROFIT_OTHER")]
    pub effect_netprofit_other: Option<Value>, // 其他影响净利润的因素
    #[serde(rename = "EFFECT_NETPROFIT_OTHER_YOY")]
    pub effect_netprofit_other_yoy: Option<Value>, // 其他影响净利润的因素同比
    #[serde(rename = "EFFECT_NETPROFIT_BALANCE")]
    pub effect_netprofit_balance: Option<Value>, // 净利润
    #[serde(rename = "EFFECT_NETPROFIT_BALANCE_YOY")]
    pub effect_netprofit_balance_yoy: Option<Value>, // 净利润同比
    #[serde(rename = "NETPROFIT")]
    pub netprofit: Option<Value>, // 净利润
    #[serde(rename = "NETPROFIT_YOY")]
    pub netprofit_yoy: Option<Value>, // 净利润同比
    #[serde(rename = "CONTINUED_NETPROFIT")]
    pub continued_netprofit: Option<Value>, // 持续经营净利润
    #[serde(rename = "CONTINUED_NETPROFIT_YOY")]
    pub continued_netprofit_yoy: Option<Value>, // 持续经营净利润同比
    #[serde(rename = "DISCONTINUED_NETPROFIT")]
    pub discontinued_netprofit: Option<Value>, // 终止经营净利润
    #[serde(rename = "DISCONTINUED_NETPROFIT_YOY")]
    pub discontinued_netprofit_yoy: Option<Value>, // 终止经营净利润同比
    #[serde(rename = "PARENT_NETPROFIT")]
    pub parent_netprofit: Option<Value>, // 归属于母公司股东的净利润
    #[serde(rename = "PARENT_NETPROFIT_YOY")]
    pub parent_netprofit_yoy: Option<Value>, // 归属于母公司股东的净利润同比
    #[serde(rename = "MINORITY_INTEREST")]
    pub minority_interest: Option<Value>, // 少数股东权益
    #[serde(rename = "MINORITY_INTEREST_YOY")]
    pub minority_interest_yoy: Option<Value>, // 少数股东权益同比
    #[serde(rename = "DEDUCT_PARENT_NETPROFIT")]
    pub deduct_parent_netprofit: Option<Value>, // 扣除非经常性损益后的净利润
    #[serde(rename = "DEDUCT_PARENT_NETPROFIT_YOY")]
    pub deduct_parent_netprofit_yoy: Option<Value>, // 扣除非经常性损益后的净利润同比
    #[serde(rename = "NETPROFIT_OTHER")]
    pub netprofit_other: Option<Value>, // 其他净利润
    #[serde(rename = "NETPROFIT_OTHER_YOY")]
    pub netprofit_other_yoy: Option<Value>, // 其他净利润同比
    #[serde(rename = "NETPROFIT_BALANCE")]
    pub netprofit_balance: Option<Value>, // 净利润
    #[serde(rename = "NETPROFIT_BALANCE_YOY")]
    pub netprofit_balance_yoy: Option<Value>, // 净利润同比
    #[serde(rename = "BASIC_EPS")]
    pub basic_eps: Option<Value>, // 基本每股收益
    #[serde(rename = "BASIC_EPS_YOY")]
    pub basic_eps_yoy: Option<Value>, // 基本每股收益同比
    #[serde(rename = "DILUTED_EPS")]
    pub diluted_eps: Option<Value>, // 稀释每股收益
    #[serde(rename = "DILUTED_EPS_YOY")]
    pub diluted_eps_yoy: Option<Value>, // 稀释每股收益同比
    #[serde(rename = "OTHER_COMPRE_INCOME")]
    pub other_compre_income: Option<Value>, // 其他综合收益
    #[serde(rename = "OTHER_COMPRE_INCOME_YOY")]
    pub other_compre_income_yoy: Option<Value>, // 其他综合收益同比
    #[serde(rename = "PARENT_OCI")]
    pub parent_oci: Option<Value>, // 归属于母公司股东的其他综合收益
    #[serde(rename = "PARENT_OCI_YOY")]
    pub parent_oci_yoy: Option<Value>, // 归属于母公司股东的其他综合收益同比
    #[serde(rename = "MINORITY_OCI")]
    pub minority_oci: Option<Value>, // 少数股东其他综合收益
    #[serde(rename = "MINORITY_OCI_YOY")]
    pub minority_oci_yoy: Option<Value>, // 少数股东其他综合收益同比
    #[serde(rename = "PARENT_OCI_OTHER")]
    pub parent_oci_other: Option<Value>, // 母公司其他综合收益其他项目
    #[serde(rename = "PARENT_OCI_OTHER_YOY")]
    pub parent_oci_other_yoy: Option<Value>, // 母公司其他综合收益其他项目同比
    #[serde(rename = "PARENT_OCI_BALANCE")]
    pub parent_oci_balance: Option<Value>, // 归属于母公司股东的其他综合收益余额
    #[serde(rename = "PARENT_OCI_BALANCE_YOY")]
    pub parent_oci_balance_yoy: Option<Value>, // 归属于母公司股东的其他综合收益余额同比
    #[serde(rename = "UNABLE_OCI")]
    pub unable_oci: Option<Value>, // 无法归属于母公司或少数股东的其他综合收益
    #[serde(rename = "UNABLE_OCI_YOY")]
    pub unable_oci_yoy: Option<Value>, // 无法归属于母公司或少数股东的其他综合收益同比
    #[serde(rename = "SETUP_PROFIT_CHANGE")]
    pub setup_profit_change: Option<Value>, // 会计政策变更影响利润金额
    #[serde(rename = "SETUP_PROFIT_CHANGE_YOY")]
    pub setup_profit_change_yoy: Option<Value>, // 会计政策变更影响利润金额同比
    #[serde(rename = "RIGHTLAW_UNABLE_OCI")] //无法确认的OCI（权利法）
    pub rightlaw_unable_oci: Option<Value>,
    #[serde(rename = "RIGHTLAW_UNABLE_OCI_YOY")] //无法确认的OCI（权利法）同比增长
    pub rightlaw_unable_oci_yoy: Option<Value>,
    #[serde(rename = "UNABLE_OCI_OTHER")] //其他无法确认的OCI
    pub unable_oci_other: Option<Value>,
    #[serde(rename = "UNABLE_OCI_OTHER_YOY")] //其他无法确认的OCI同比增长
    pub unable_oci_other_yoy: Option<Value>,
    #[serde(rename = "UNABLE_OCI_BALANCE")] //无法确认的OCI余额
    pub unable_oci_balance: Option<Value>,
    #[serde(rename = "UNABLE_OCI_BALANCE_YOY")] //无法确认的OCI余额同比增长
    pub unable_oci_balance_yoy: Option<Value>,
    #[serde(rename = "ABLE_OCI")] //可确认的OCI
    pub able_oci: Option<Value>,
    #[serde(rename = "ABLE_OCI_YOY")] //可确认的OCI同比增长
    pub able_oci_yoy: Option<Value>,
    #[serde(rename = "RIGHTLAW_ABLE_OCI")] //可确认的OCI（权利法）
    pub rightlaw_able_oci: Option<Value>,
    #[serde(rename = "RIGHTLAW_ABLE_OCI_YOY")] //可确认的OCI（权利法）同比增长
    pub rightlaw_able_oci_yoy: Option<Value>,
    #[serde(rename = "AFA_FAIRVALUE_CHANGE")] //AFA公允价值变动
    pub afa_fairvalue_change: Option<Value>,
    #[serde(rename = "AFA_FAIRVALUE_CHANGE_YOY")] //AFA公允价值变动同比增长
    pub afa_fairvalue_change_yoy: Option<Value>,
    #[serde(rename = "HMI_AFA")] //HMI AFA
    pub hmi_afa: Option<Value>,
    #[serde(rename = "HMI_AFA_YOY")] //HMI AFA同比增长
    pub hmi_afa_yoy: Option<Value>,
    #[serde(rename = "CASHFLOW_HEDGE_VALID")] //现金流对冲有效
    pub cashflow_hedge_valid: Option<Value>,
    #[serde(rename = "CASHFLOW_HEDGE_VALID_YOY")] //现金流对冲有效同比增长
    pub cashflow_hedge_valid_yoy: Option<Value>,
    #[serde(rename = "CONVERT_DIFF")] //转换差异
    pub convert_diff: Option<Value>,
    #[serde(rename = "CONVERT_DIFF_YOY")] //转换差异同比增长
    pub convert_diff_yoy: Option<Value>,
    #[serde(rename = "ABLE_OCI_OTHER")] //可确认的其他OCI
    pub able_oci_other: Option<Value>,
    #[serde(rename = "ABLE_OCI_OTHER_YOY")] //可确认的其他OCI同比增长
    pub able_oci_other_yoy: Option<Value>,
    #[serde(rename = "ABLE_OCI_BALANCE")] //可确认的OCI余额
    pub able_oci_balance: Option<Value>,
    #[serde(rename = "ABLE_OCI_BALANCE_YOY")] //可确认的OCI余额同比增长
    pub able_oci_balance_yoy: Option<Value>,
    #[serde(rename = "OCI_OTHER")] //其他OCI
    pub oci_other: Option<Value>,
    #[serde(rename = "OCI_OTHER_YOY")] //其他OCI同比增长
    pub oci_other_yoy: Option<Value>,
    #[serde(rename = "OCI_BALANCE")] //OCI余额
    pub oci_balance: Option<Value>,
    #[serde(rename = "OCI_BALANCE_YOY")] //OCI余额同比增长
    pub oci_balance_yoy: Option<Value>,
    #[serde(rename = "TOTAL_COMPRE_INCOME")] //综合收益总额
    pub total_compre_income: Option<Value>,
    #[serde(rename = "TOTAL_COMPRE_INCOME_YOY")] //综合收益总额同比增长
    pub total_compre_income_yoy: Option<Value>,
    #[serde(rename = "PARENT_TCI")] //母公司综合收益
    pub parent_tci: Option<Value>,
    #[serde(rename = "PARENT_TCI_YOY")] //母公司综合收益同比增长
    pub parent_tci_yoy: Option<Value>,
    #[serde(rename = "MINORITY_TCI")] //少数股东综合收益
    pub minority_tci: Option<Value>,
    #[serde(rename = "MINORITY_TCI_YOY")] //少数股东综合收益同比增长
    pub minority_tci_yoy: Option<Value>,
    #[serde(rename = "TCI_BALANCE")] //综合收益余额
    pub tci_balance: Option<Value>,
    #[serde(rename = "TCI_BALANCE_YOY")] //综合收益余额同比增长
    pub tci_balance_yoy: Option<Value>,
    #[serde(rename = "EFFECT_TCI_BALANCE")] //有效综合收益余额
    pub effect_tci_balance: Option<Value>,
    #[serde(rename = "EFFECT_TCI_BALANCE_YOY")] //有效综合收益余额同比增长
    pub effect_tci_balance_yoy: Option<Value>,
    #[serde(rename = "OTHERRIGHT_FAIRVALUE_CHANGE")] //其他权益公允价值变动
    pub otherright_fairvalue_change: Option<Value>,
    #[serde(rename = "OTHERRIGHT_FAIRVALUE_CHANGE_YOY")] //其他权益公允价值变动同比增长
    pub otherright_fairvalue_change_yoy: Option<Value>,
    #[serde(rename = "CREDITRISK_FAIRVALUE_CHANGE")] //信用风险公允价值变动
    pub creditrisk_fairvalue_change: Option<Value>,
    #[serde(rename = "CREDITRISK_FAIRVALUE_CHANGE_YOY")] //信用风险公允价值变动同比增长
    pub creditrisk_fairvalue_change_yoy: Option<Value>,
    #[serde(rename = "CREDITOR_FAIRVALUE_CHANGE")] //债权人公允价值变动
    pub creditor_fairvalue_change: Option<Value>,
    #[serde(rename = "CREDITOR_FAIRVALUE_CHANGE_YOY")] //债权人公允价值变动同比增长
    pub creditor_fairvalue_change_yoy: Option<Value>,
    #[serde(rename = "FINANCE_OCI_AMT")] //金融OCI金额
    pub finance_oci_amt: Option<Value>,
    #[serde(rename = "FINANCE_OCI_AMT_YOY")] //金融OCI金额同比增长
    pub finance_oci_amt_yoy: Option<Value>,
    #[serde(rename = "CREDITOR_IMPAIRMENT_RESERVE")] //债权人减值准备
    pub creditor_impairment_reserve: Option<Value>,
    #[serde(rename = "CREDITOR_IMPAIRMENT_RESERVE_YOY")] //债权人减值准备同比增长
    pub creditor_impairment_reserve_yoy: Option<Value>,
    #[serde(rename = "ACF_END_INCOME")] //ACF期末收益
    pub acf_end_income: Option<Value>,
    #[serde(rename = "ACF_END_INCOME_YOY")] //ACF期末收益同比增长
    pub acf_end_income_yoy: Option<Value>,
    #[serde(rename = "OPINION_TYPE")] //意见类型
    pub opinion_type: Option<Value>,
    #[serde(rename = "OSOPINION_TYPE")] //OS意见类型
    pub osopinion_type: Option<Value>,
}

impl RptF10FinanceBincome {
    //Refer: https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=SZ000001&color=b#/cwfx/lrb 利润表 按报告期 == 报告期同比 (同一个API，只是显示内容不同)//data: https://datacenter.eastmoney.com/securities/api/data/get?type=RPT_F10_FINANCE_BINCOME&sty=APP_F10_BINCOME&filter=(SECUCODE%3D%22000001.SZ%22)(REPORT_DATE%20in%20(%272023-09-30%27%2C%272023-06-30%27%2C%272023-03-31%27%2C%272022-12-31%27%2C%272022-09-30%27))&p=1&ps=5&sr=-1&st=REPORT_DATE&source=HSF10&client=PC&v=005778232941773598
    pub async fn rpt_f10_finance_bincome(_code: &str) -> Result<RptF10FinanceBincome> {
        // Query String Parameters:
        //
        // type: RPT_F10_FINANCE_BINCOME
        // sty: APP_F10_BINCOME
        // filter: (SECUCODE="000001.SZ")(REPORT_DATE in ('2023-09-30','2023-06-30','2023-03-31','2022-12-31','2022-09-30'))
        // p: 1
        // ps: 5
        // sr: -1
        // st: REPORT_DATE
        // source: HSF10
        // client: PC
        // v: 005778232941773598

        let request_url = format!(
            "https://datacenter.eastmoney.com/securities/api/data/get?type=RPT_F10_FINANCE_BINCOME&sty=APP_F10_BINCOME&filter=(SECUCODE%3D%22000001.SZ%22)(REPORT_DATE%20in%20(%272023-09-30%27%2C%272023-06-30%27%2C%272023-03-31%27%2C%272022-12-31%27%2C%272022-09-30%27))&p=1&ps=5&sr=-1&st=REPORT_DATE&source=HSF10&client=PC&v=005778232941773598"
        );

        let response = REQWEST_CLIENT.get(request_url)
            .header(reqwest::header::ACCEPT, "*/*")
            .header(reqwest::header::ACCEPT_ENCODING, "gzip, deflate, br")
            .header(reqwest::header::ACCEPT_LANGUAGE, "zh-CN,zh;q=0.9,en;q=0.8")
            .header(reqwest::header::CACHE_CONTROL, "no-cache")
            .header(reqwest::header::CONNECTION, "keep-alive")
            // .header(reqwest::header::COOKIE, "qgqp_b_id=d6299473145338f68687834ba37fa719; st_si=77687174285423; AUTH_FUND.EASTMONEY.COM_GSJZ=AUTH*TTJJ*TOKEN; EMFUND0=01-16%2016%3A57%3A06@%23%24%u4E2D%u822A%u65B0%u8D77%u822A%u7075%u6D3B%u914D%u7F6E%u6DF7%u5408A@%23%24005537; EMFUND1=01-16%2017%3A04%3A53@%23%24%u91D1%u4FE1%u6D88%u8D39%u5347%u7EA7%u80A1%u7968A@%23%24006692; EMFUND2=01-16%2020%3A01%3A56@%23%24%u5357%u65B9%u4E0A%u8BC1380ETF@%23%24510290; EMFUND3=01-29%2015%3A02%3A07@%23%24%u534E%u590F%u4E2D%u8BC1%u5168%u6307%u623F%u5730%u4EA7ETF@%23%24515060; EMFUND4=01-30%2014%3A41%3A22@%23%24%u534E%u6CF0%u67CF%u745E%u6D88%u8D39%u6210%u957F%u6DF7%u5408@%23%24001069; EMFUND5=01-30%2014%3A45%3A59@%23%24%u5E7F%u53D1%u6052%u751F%u6D88%u8D39%28QDII-ETF%29@%23%24159699; EMFUND6=01-30%2014%3A47%3A24@%23%24%u5357%u65B9%u7EA2%u5229%u4F4E%u6CE250ETF@%23%24515450; EMFUND7=01-31%2015%3A21%3A23@%23%24%u56FD%u8054%u4E2D%u8BC1%u7164%u70AD%u6307%u6570%28LOF%29A@%23%24168204; EMFUND8=02-02%2008%3A34%3A56@%23%24%u666F%u987A%u957F%u57CE%u652F%u67F1%u4EA7%u4E1A%u6DF7%u5408@%23%24260117; EMFUND9=02-02 10:30:22@#$%u897F%u90E8%u5229%u5F97%u805A%u79BE%u6DF7%u5408A@%23%24007423; st_asi=delete; HAList=ty-1-513130-%u6052%u751F%u79D1%u6280ETF%2Cty-0-300078-%u601D%u521B%u533B%u60E0%2Cty-0-300486-%u4E1C%u6770%u667A%u80FD%2Cty-1-513360-%u6559%u80B2ETF%2Cty-0-300478-%u676D%u5DDE%u9AD8%u65B0%2Cty-0-301589-N%u8BFA%u74E6%2Cty-1-603135-%u4E2D%u91CD%u79D1%u6280%2Cty-0-000001-%u5E73%u5B89%u94F6%u884C%2Cty-0-002400-%u7701%u5E7F%u96C6%u56E2%2Cty-1-601127-%u8D5B%u529B%u65AF; st_pvi=47260449691882; st_sp=2024-01-12%2017%3A28%3A27; st_inirUrl=https%3A%2F%2Fwww.google.com.hk%2F; st_sn=438; st_psi=20240226102321941-113200301321-9024721593")
            .header(reqwest::header::HOST, "datacenter.eastmoney.com")
            .header(reqwest::header::ORIGIN, "https://emweb.securities.eastmoney.com")
            .header(reqwest::header::PRAGMA, "no-cache")
            .header(reqwest::header::REFERER, "https://emweb.securities.eastmoney.com/")
            .header(
                reqwest::header::USER_AGENT,
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
            )
            .header(
                "Sec-Ch-Ua",
                "\"Not A(Brand\";v=\"99\", \"Google Chrome\";v=\"121\", \"Chromium\";v=\"121\""
            )
            .header("Sec-Ch-Ua-Mobile", "?0")
            .header("Sec-Ch-Ua-Platform", "\"macOS\"")
            .header("Sec-Fetch-Dest", "empty")
            .header("Sec-Fetch-Mode", "cors")
            .header("Sec-Fetch-Site", "same-origin")
            .send().await?;

        let body = response.text().await?;

        // println!("*** body={}\n\nhangqin\n\n", body);

        let fund: RptF10FinanceBincome = serde_json::from_str(&body)?;

        // println!("{:?}", fund);

        Ok(fund)
    }
}

#[cfg(test)]
mod test {
    use super::*;

    #[tokio::test]
    async fn test_stock_rpt_f10_finance_bincome() {
        let result = RptF10FinanceBincome::rpt_f10_finance_bincome("000001.SZ").await;

        assert_eq!(result.is_ok(), true);
        if let Ok(bincome) = result {
            assert_eq!(bincome.message.as_str(), Some("ok"));
            println!(
                "bincome.result.data.first.secucode={:?}\n",
                bincome.result.data.first().unwrap().secucode
            );
        }
    }
}
